#include "widget.h"
#include "ui_widget.h"
#include <QByteArray>
#include <QFile>
#include <QDebug>
#include <QMessageBox>
#include <QHostAddress>
#include "protocol.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    loadConfig();
    //链接服务器
    connect(&m_tcpSocket,SIGNAL(connected()),this,SLOT(showConnect()));
    m_tcpSocket.connectToHost(QHostAddress(m_strIp),m_usPort);//链接服务器，ip,端口号，若链接成功则代表发出信号
    //在关联信号与曹触发槽函数
}

void Widget::loadConfig()
{
    QFile file(":/client.config");
    if(file.open(QIODevice::ReadOnly))
    {
        QByteArray baData=file.readAll();//所有数据
        QString strData=baData.toStdString().c_str();//获取数据的首地址
        strData.replace("\r\n", " ");
        QStringList strList=strData.split(" ");
        m_strIp=strList.at(0);
        m_usPort=strList.at(1).toUShort();
        qDebug()<<"ip"<<m_strIp<<"port:"<<m_usPort;
    }
    else
    {
        QMessageBox::critical(this,"open config","open config faild");
    }

}

Widget::~Widget()
{
    delete ui;
}

void Widget::showConnect()
{
    QMessageBox::information(this,"链接服务器","链接服务器成功");
}


void Widget::on_sendMsgBtn_clicked()
{
    QString strMsg=ui->lineEdit->text();
       if(!strMsg.isEmpty())
    {
        qDebug()<<"开始发送-----"<<endl;
        //加一个字节
        PDU *pdu=mkPdu(strMsg.size()+1);
        pdu->uiMsgType=8888;
        //将发送的数据拷贝至结构体里面去
        memcpy(pdu->caData,strMsg.toStdString().c_str(),strMsg.size());
        //发送的数据后面的参数发送的大小
        m_tcpSocket.write((char *)pdu,pdu->uiPduLen);
        free(pdu);
        pdu=NULL;
    }

    else
    {
        QMessageBox::warning(this,"信息发送","信息发送的数据不能为空！");
    }
}

